'use strict';

const { openfaas_fn, manual_invoke, get_active_function, update_function } = require('../Middleware/mid_interface');

const Controller = require('egg').Controller;

class FuncTotalController extends Controller {
    async update_function() {
        const { ctx } = this;
        const { name } = ctx.request.body;
        var data = await update_function(name);
        ctx.body = data;
    }
    async get_function_total() {
        const { ctx } = this;
        var data = await openfaas_fn();
        ctx.body = data;
    }
    async invoke_function() {
        const { ctx } = this;
        const { func, cont } = ctx.request.body;
        var cont_tmp;
        try {
            cont_tmp = JSON.parse(cont);
            console.log(cont_tmp);
        } catch (error) {
            cont_tmp = cont;
        }
        var data = await manual_invoke(func, cont_tmp);
        ctx.body = data;
    }
    async get_active() {
        const { ctx } = this;
        const { name } = ctx.request.body;
        console.log(name);
        var data = await get_active_function(name)
        ctx.body = data;
    }
}

module.exports = FuncTotalController;
/**
 * /get_function_total 
 * POST方法，用于获取函数总览信息
 * ·入参 
 *      token
 *      limit
 *      offset
 * ·回参 
 *      data [{func对象展开},{func对象展开},{func对象展开}…] 对象展开的列表
 *      code 1-成功 0-失败
 *      msg 返回的提示消息："获取函数总览成功"
 * 
 * /invoke_function 
 * POST方法，用于手动调用函数
 * ·入参 
 *      token
 *      cont response请求体："Hello, World!"
 * ·回参 
 *      data 返回调用的Response：response body
 *      code 1-成功 0-失败
 *      msg 返回的提示消息："调用函数成功"
 * 
 * /get_active 
 * POST方法，用于获取选中的函数
 * ·入参 
 *      token
 *      node_id 节点ID
 * ·回参 
 *      data {node对象展开}
 *      code 1-成功 0-失败
 *      msg 返回的提示消息："获取选中的函数成功"
 */